using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Credinka.Ayni.SEA.EN;
namespace Credinka.Ayni.SEA.AD
{
    public class adPerfilUsuario : adGeneral
    {

        public adPerfilUsuario(SqlConnection con)
        {
            conexion = con;
        }

        public List<enPerfilUsuario> fListar(enPerfilUsuario poenPerfilUsuario)
        {
            List<enPerfilUsuario> loenPerfilUsuario = null;
            SqlCommand cmd = new SqlCommand("sSEA_ConsultarPerfilUsuario", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piNumeroPagina", SqlDbType.Int).Value = poenPerfilUsuario.NumeroPagina;
            cmd.Parameters.Add("@piNumeroRegistros", SqlDbType.Int).Value = poenPerfilUsuario.NumeroRegistros;
            cmd.Parameters.Add("@piIdUsuario", SqlDbType.Int).Value = poenPerfilUsuario.IdUsuario;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_TotalRegistros = drd.GetOrdinal("TotalRegistros");
                int pos_RowNumber = drd.GetOrdinal("RowNumber");
                int pos_IdPerfilUsuario = drd.GetOrdinal("iIdPerfilUsuario");
                int pos_IdPerfil = drd.GetOrdinal("iIdPerfil");
                int pos_IdUsuario = drd.GetOrdinal("iIdUsuario");
                int pos_NombrePerfil = drd.GetOrdinal("nombrePerfil");
                int pos_DescripcionPerfil = drd.GetOrdinal("descripcionPerfil");
                int pos_FechaInicio = drd.GetOrdinal("dtFechaInicio");
                int pos_FechaFin = drd.GetOrdinal("dtFechaFin");
                loenPerfilUsuario = new List<enPerfilUsuario>();
                enPerfilUsuario oenPerfilUsuario;
                while (drd.Read())
                {
                    oenPerfilUsuario = new enPerfilUsuario();
                    oenPerfilUsuario.TotalRegistros = drd.GetInt32(pos_TotalRegistros);
                    oenPerfilUsuario.RowNumber = drd.GetInt32(pos_RowNumber);
                    oenPerfilUsuario.IdPerfilUsuario = drd.GetInt32(pos_IdPerfilUsuario);
                    oenPerfilUsuario.IdPerfil = (drd.IsDBNull(pos_IdPerfil) ? 0 : drd.GetInt32(pos_IdPerfil));
                    oenPerfilUsuario.IdUsuario = (drd.IsDBNull(pos_IdUsuario) ? 0 : drd.GetInt32(pos_IdUsuario));
                    oenPerfilUsuario.entPerfil = new enPerfil();
                    oenPerfilUsuario.entPerfil.Nombre = (drd.IsDBNull(pos_NombrePerfil) ? "" : drd.GetString(pos_NombrePerfil));
                    oenPerfilUsuario.entPerfil.Descripcion = (drd.IsDBNull(pos_DescripcionPerfil) ? "" : drd.GetString(pos_DescripcionPerfil));
                    oenPerfilUsuario.FechaInicio = (drd.IsDBNull(pos_FechaInicio) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_FechaInicio));
                    oenPerfilUsuario.FechaFin = (drd.IsDBNull(pos_FechaFin) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_FechaFin));
                    loenPerfilUsuario.Add(oenPerfilUsuario);
                }
            }
            return (loenPerfilUsuario);
        }

        public List<enPerfilUsuario> fListarPerfilUsuario(int pIdUsuario)
        {
            List<enPerfilUsuario> loenPerfilUsuario = null;
            SqlCommand cmd = new SqlCommand("sSEA_ListarPerfilUsuario", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piIdUsuario", SqlDbType.Int).Value = pIdUsuario;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdPerfilUsuario = drd.GetOrdinal("iIdPerfilUsuario");
                int pos_IdPerfil = drd.GetOrdinal("iIdPerfil");
                int pos_IdUsuario = drd.GetOrdinal("iIdUsuario");
                int pos_NombrePerfil = drd.GetOrdinal("nombrePerfil");
                int pos_DescripcionPerfil = drd.GetOrdinal("descripcionPerfil");
                int pos_FechaInicio = drd.GetOrdinal("dtFechaInicio");
                int pos_FechaFin = drd.GetOrdinal("dtFechaFin");
                int pos_CodigoTipoPerfil = drd.GetOrdinal("iCodigoTipoPerfil");
                loenPerfilUsuario = new List<enPerfilUsuario>();
                enPerfilUsuario oenPerfilUsuario;
                while (drd.Read())
                {
                    oenPerfilUsuario = new enPerfilUsuario();
                    oenPerfilUsuario.IdPerfilUsuario = drd.GetInt32(pos_IdPerfilUsuario);
                    oenPerfilUsuario.IdPerfil = (drd.IsDBNull(pos_IdPerfil) ? 0 : drd.GetInt32(pos_IdPerfil));
                    oenPerfilUsuario.IdUsuario = (drd.IsDBNull(pos_IdUsuario) ? 0 : drd.GetInt32(pos_IdUsuario));
                    oenPerfilUsuario.entPerfil = new enPerfil();
                    oenPerfilUsuario.entPerfil.Nombre = (drd.IsDBNull(pos_NombrePerfil) ? "" : drd.GetString(pos_NombrePerfil));
                    oenPerfilUsuario.entPerfil.Descripcion = (drd.IsDBNull(pos_DescripcionPerfil) ? "" : drd.GetString(pos_DescripcionPerfil));
                    oenPerfilUsuario.FechaInicio = (drd.IsDBNull(pos_FechaInicio) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_FechaInicio));
                    oenPerfilUsuario.FechaFin = (drd.IsDBNull(pos_FechaFin) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_FechaFin));
                    oenPerfilUsuario.CodigoTipoPerfil = (drd.IsDBNull(pos_CodigoTipoPerfil) ? 0 : drd.GetInt32(pos_CodigoTipoPerfil));
                    loenPerfilUsuario.Add(oenPerfilUsuario);
                }
            }
            return (loenPerfilUsuario);
        }

        public int fRegistrar(enPerfilUsuario poenPerfilUsuario)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_RegistrarPerfilUsuario", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdPerfil", SqlDbType.Int).Value = poenPerfilUsuario.IdPerfil;
            cmd.Parameters.Add("@piiIdUsuario", SqlDbType.Int).Value = poenPerfilUsuario.IdUsuario;
            cmd.Parameters.Add("@iIdCargo", SqlDbType.Int).Value = poenPerfilUsuario.IdCargo;
            cmd.Parameters.Add("@iCodigoTipoPerfil", SqlDbType.Int).Value = poenPerfilUsuario.CodigoTipoPerfil;
            //cmd.Parameters.Add("@pidtFechaInicio", SqlDbType.DateTime).Value = poenPerfilUsuario.FechaInicio;
            //cmd.Parameters.Add("@pidtFechaFin", SqlDbType.DateTime).Value = poenPerfilUsuario.FechaFin;
            //cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenPerfilUsuario.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioCreacion", SqlDbType.VarChar).Value = poenPerfilUsuario.AudNombreUsuarioCreacion;
            cmd.Parameters.Add("@pivAudIPCreacion", SqlDbType.VarChar).Value = poenPerfilUsuario.AudIPCreacion;
            cmd.Parameters.Add("@pivAudMacCreacion", SqlDbType.VarChar).Value = poenPerfilUsuario.AudMacCreacion;
            N = cmd.ExecuteNonQuery();
            return N;
        }

        public int fModificar(enPerfilUsuario poenPerfilUsuario)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_ModificarPerfilUsuario", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdPerfilUsuario", SqlDbType.Int).Value = poenPerfilUsuario.IdPerfilUsuario;
            cmd.Parameters.Add("@piiIdPerfil", SqlDbType.Int).Value = poenPerfilUsuario.IdPerfil;
            cmd.Parameters.Add("@piiIdUsuario", SqlDbType.Int).Value = poenPerfilUsuario.IdUsuario;
            cmd.Parameters.Add("@pidtFechaInicio", SqlDbType.DateTime).Value = poenPerfilUsuario.FechaInicio;
            cmd.Parameters.Add("@pidtFechaFin", SqlDbType.DateTime).Value = poenPerfilUsuario.FechaFin;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenPerfilUsuario.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenPerfilUsuario.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.DateTime).Value = poenPerfilUsuario.udIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenPerfilUsuario.AudMacModificacion;
            N = cmd.ExecuteNonQuery();
            return (N);
        }

        public int fContar()
        {
            int totalPerfilUsuario;
            SqlCommand cmd = new SqlCommand("sSEA_ContarPerfilUsuario", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            totalPerfilUsuario = (int)cmd.ExecuteScalar();
            return (totalPerfilUsuario);
        }
    }
}
